using SheLife.Domain.Interfaces.Repositories;

namespace SheLife.Domain.Interfaces
{
    /// <summary>
    /// 仓储工厂接口，用于创建和管理仓储实例
    /// </summary>
    public interface IRepositoryFactory
    {
        // 用户管理相关仓储
        IUserRepository CreateUserRepository();
        IMenstrualCycleRepository CreateMenstrualCycleRepository();
        IMenstrualSymptomRepository CreateMenstrualSymptomRepository();
        IMenstrualNoteRepository CreateMenstrualNoteRepository();
        IBasalBodyTemperatureRepository CreateBasalBodyTemperatureRepository();

        // 膳食管理相关仓储
        IDietRecordRepository CreateDietRecordRepository();
        IDietNutrientRepository CreateDietNutrientRepository();
        IRecipeRepository CreateRecipeRepository();
        IRecipeIngredientRepository CreateRecipeIngredientRepository();
        IRecipeStepRepository CreateRecipeStepRepository();
        IRecipeNutrientRepository CreateRecipeNutrientRepository();
        IUserRecipeRepository CreateUserRecipeRepository();

        // 护肤管理相关仓储
        ISkincareRecordRepository CreateSkincareRecordRepository();
        ISkincareProductRepository CreateSkincareProductRepository();
        ISkincareProductRecordRepository CreateSkincareProductRecordRepository();
        IUserSkincareProductRepository CreateUserSkincareProductRepository();
        ISkincareReminderRepository CreateSkincareReminderRepository();
        ISkincarePlanRepository CreateSkincarePlanRepository();
        ISkincarePlanStepRepository CreateSkincarePlanStepRepository();
        IUserSkincarePlanRepository CreateUserSkincarePlanRepository();

        // 穿搭管理相关仓储
        IClothingRepository CreateClothingRepository();
        IOutfitRepository CreateOutfitRepository();
        IOutfitClothingRepository CreateOutfitClothingRepository();
        IOutfitRecordRepository CreateOutfitRecordRepository();
        IOutfitTemplateRepository CreateOutfitTemplateRepository();
        IOutfitTemplateItemRepository CreateOutfitTemplateItemRepository();
        IUserOutfitTemplateRepository CreateUserOutfitTemplateRepository();
        IOutfitSuggestionRepository CreateOutfitSuggestionRepository();

        // 成长管理相关仓储
        IGrowthGoalRepository CreateGrowthGoalRepository();
        IGrowthGoalTaskRepository CreateGrowthGoalTaskRepository();
        IGrowthGoalRecordRepository CreateGrowthGoalRecordRepository();
        IGrowthGoalTaskRecordRepository CreateGrowthGoalTaskRecordRepository();
        IGrowthArchiveRepository CreateGrowthArchiveRepository();
        IGrowthArchiveItemRepository CreateGrowthArchiveItemRepository();
        IEmotionDiaryRepository CreateEmotionDiaryRepository();
        IEmotionDiaryCommentRepository CreateEmotionDiaryCommentRepository();
        IEmotionDiaryLikeRepository CreateEmotionDiaryLikeRepository();
        IGrowthCourseRepository CreateGrowthCourseRepository();
        IGrowthCourseLessonRepository CreateGrowthCourseLessonRepository();
        IUserGrowthCourseRepository CreateUserGrowthCourseRepository();
        IUserGrowthCourseProgressRepository CreateUserGrowthCourseProgressRepository();
        IGrowthCourseReviewRepository CreateGrowthCourseReviewRepository();

        // 社区社交相关仓储
        ICommunityPostRepository CreateCommunityPostRepository();
        ICommunityPostCommentRepository CreateCommunityPostCommentRepository();
        ICommunityPostLikeRepository CreateCommunityPostLikeRepository();
        ICommunityPostCollectionRepository CreateCommunityPostCollectionRepository();
        ICommunityCategoryRepository CreateCommunityCategoryRepository();
        ICommunityTagRepository CreateCommunityTagRepository();
        IUserFriendRepository CreateUserFriendRepository();
        IUserFollowRepository CreateUserFollowRepository();
        IUserMessageRepository CreateUserMessageRepository();
        IUserGroupRepository CreateUserGroupRepository();
        IUserGroupMemberRepository CreateUserGroupMemberRepository();
        IUserGroupPostRepository CreateUserGroupPostRepository();

        // 通知提醒相关仓储
        INotificationRepository CreateNotificationRepository();
        IReminderRepository CreateReminderRepository();
        IReminderHistoryRepository CreateReminderHistoryRepository();
        IUserNotificationSettingRepository CreateUserNotificationSettingRepository();
        IMessageTemplateRepository CreateMessageTemplateRepository();
        IMessageSendLogRepository CreateMessageSendLogRepository();

        // 系统设置相关仓储
        ISystemConfigRepository CreateSystemConfigRepository();
        ISystemLogRepository CreateSystemLogRepository();
        ISystemTaskRepository CreateSystemTaskRepository();
        ISystemTaskLogRepository CreateSystemTaskLogRepository();
        ISystemNotificationRepository CreateSystemNotificationRepository();
        ISystemPermissionRepository CreateSystemPermissionRepository();
        ISystemRoleRepository CreateSystemRoleRepository();
        ISystemUserRoleRepository CreateSystemUserRoleRepository();
        ISystemRolePermissionRepository CreateSystemRolePermissionRepository();
        ISystemMenuRepository CreateSystemMenuRepository();
        ISystemRoleMenuRepository CreateSystemRoleMenuRepository();
        ISystemDictionaryRepository CreateSystemDictionaryRepository();
        ISystemOperationLogRepository CreateSystemOperationLogRepository();
        ISystemLoginLogRepository CreateSystemLoginLogRepository();
        ISystemFileRepository CreateSystemFileRepository();
    }
}